#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/wait.h>
#define MAX_CHAR 1024
char command[MAX_CHAR];

int getcommand()
{
  memset(command,0x00,MAX_CHAR);
  printf("minishell lhb#");
  fflush(stdout);
  fgets(command,MAX_CHAR,stdin);
  command[strlen(command)-1] = '\0';
  if(command[0] == '\n')
  {
    return -1;
  }
  return 0;
}
//void parse(char* argv[])
//{
//  //printf("this is parse\n");
//  int begin = 0;
//  int j = 0;
//  for(int i = 0;command[i] != '\0';i++)
//  {
//    if(command[i] == ' ')
//    {
//      command[i] = '\0';
//      argv[j++] = command + begin;
//      begin = strlen(command+begin)+begin+1;
//    }
//  }
//  argv[j] = command+begin;
//  argv[j+1] = NULL; 
//  if(strcmp(argv[0],"cd") == 0)
//  {
//    if(argv[1] != NULL)
//    {
//      chdir(argv[1]);
//    }
//  }
//  if(fork()==0)
//  {
//    execvp(argv[0],argv);
//    exit(-1);
//  }
//  waitpid(-1,NULL,0);
//}
void parse2(char* argv[])
{
  const char* a = " ";
  argv[0] = strtok(command,a);
  int i = 1;
  while(argv[i] = strtok(NULL,a))
  {
    i++;
  }
  if(strcmp(argv[0],"cd") == 0)
  {
    if(argv[1] != NULL)
    {
      chdir(argv[1]);
    }
  }
  if(fork() == 0)
  {
    execvp(argv[0],argv);
    exit(-1);
  }
  else{
    waitpid(-1,NULL,0);
  }
}
int main(int argc,char* argv[])
{
  while(1)
  {
    if(getcommand() < 0)
    {
      continue;
    }
    char* argv1[1024];
    //printf("%s\n",command);
    parse2(argv1);
  }
  return 0;
}
